home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Modules / BackSpaceModules / Source / FadingImage / FadingImageView.m < prev    next >
Text File  |  1992-06-22  |  2KB  |  102 lines

  1. //
  2. //  FadingImageView.m
  3. //
  4. //  Implements a fading image screen saver view
  5. //
  6. //  Lennart Lovstrand, August 1991.
  7. //    small modifications by sam 910904
  8. //
  9. //  You may freely copy, distribute, and reuse the code in this example.
  10. //  NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  11. //  fitness for any particular use.
  12.  
  13.  
  14. #import "FadingImageView.h"
  15. #import "Thinker.h"
  16. #import <appkit/NXImage.h>
  17. #import <dpsclient/wraps.h>
  18. #import <libc.h>
  19. #import <math.h>
  20. //#import <appkit/Application.h>
  21.  
  22. #define STEPTIME    50    /* time between fades (millisec) */
  23. #define WAITTIME    6000    /* wait before fading (millisec) */
  24.  
  25. #define FADEDELTA    0.05
  26.  
  27. @implementation FadingImageView
  28.  
  29. - drawSelf:(const NXRect *)rects :(int)rectCount
  30. {
  31.     NXPoint p;
  32.     if (!rects || !rectCount) return self;
  33.  
  34.     [super drawSelf:rects :rectCount];
  35.     
  36.     p.x = floor(imageRect.origin.x);
  37.     p.y = floor(imageRect.origin.y);
  38.  
  39.     [image dissolve: delta toPoint: &p];
  40.  
  41.     return self;
  42. }
  43.  
  44. - oneStep
  45. {
  46.     if (![self timePassed: steptime]) return self;
  47.  
  48.     switch (state)
  49.     {
  50.     case FV_FadeIn:
  51.         delta += FADEDELTA;
  52.         if (delta >= 1.0)
  53.         {
  54.             delta = 1.0;
  55.             state = FV_FadeOut;
  56.             steptime = WAITTIME;
  57.         }
  58.  
  59.         PSsetgray(0.0);
  60.         NXRectFill(&imageRect);
  61.         [image dissolve: delta toPoint: &imageRect.origin];
  62.         break;
  63.  
  64.     case FV_FadeOut:
  65.         delta -= FADEDELTA;
  66.         if (delta <= 0.0)
  67.         {
  68.             delta = 0.0;
  69.             state = FV_Move;
  70.         }
  71.  
  72.         PSsetgray(0.0);
  73.         NXRectFill(&imageRect);
  74.         [image dissolve: delta toPoint: &imageRect.origin];
  75.         steptime = STEPTIME;
  76.         break;
  77.  
  78.     case FV_Move:
  79.         imageRect.origin.x = floor(randBetween(0, maxCoord.x));
  80.         imageRect.origin.y = floor(randBetween(0, maxCoord.y));
  81.         state = FV_FadeIn;
  82.         steptime = STEPTIME;
  83.         break;
  84.     }
  85.  
  86.     return self;
  87. }
  88.  
  89. - initFrame:(NXRect *)frameRect
  90. {
  91.     steptime = STEPTIME;
  92.     state = FV_Move;
  93.     return [super initFrame:frameRect];
  94. }
  95.  
  96. - inspector:sender
  97. {
  98.     return [sender commonImageInspector];
  99. }
  100.  
  101. @end
  102.